package com.example.demo.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * 声明式服务<br/>
 * Feign+Hystrix 熔断降级<br/>
 * 其他业务模块可以直接依赖引用，通过调用接口即可完成服务的远程调用，open-feign会对此类做动态代理
 * 
 * @FeignClient 中的 name 表示要调用的服务的实例名称（在eureka中的名称）
 * @FeignClient 中的 fallbackFactory 表示调用服务出现问题时可以做出处理并打印出相关日志
 * feign是通过httpUrlCollection连接，要是想通过httpClient连接需要引入jar包，并开启httpClient
 * 还可以使用HTTPClient和OKhttp
 */
//@FeignClient(name="demoA", fallback = DemoFeignFallback.class)
//@FeignClient(name="demoA")
@FeignClient(name="demoA", fallbackFactory=DemoFeignFactory.class)
public interface DemoAClient {

		/** 
	   * value的值就是服务端定义的接口的路径
	   * method也是服务端定义的方法请求的类型 
	   * @return 
	   */  
//	  @RequestMapping(method = RequestMethod.POST, value = "/hello")  
//	  String hello(@RequestParam(value = "token") String token);  
	
	  @RequestMapping("/demoA/hello")
	  String hello(); 
}
